package com.jinmdz.fmis.core.constant;

/**
 * 响应枚举类
 *
 * @author LiCongLu
 * @date 2019-12-20 11:49
 */
public enum EResultCode {
    /**
     * 请求操作失败
     */
    CODE0(0, "请求操作失败"),
    /**
     * 请求操作成功
     */
    CODE1(1, "请求操作成功"),
    /**
     * 登录验证失效
     */
    CODE2(2, "登录验证失效"),
    //CODE200(200, "请求操作成功"),
    /**
     * 请求参数有误
     */
    CODE400(400, "请求参数有误"),
    //CODE401(401, "登录验证失效"),
    /**
     * 请求地址禁用
     */
    CODE403(403, "请求地址禁用"),
    /**
     * 请求地址无效
     */
    CODE404(404, "请求地址无效"),
    /**
     * 请求方法错误
     */
    CODE405(405, "请求方法错误"),
    /**
     * 请求服务异常
     */
    CODE500(500, "请求服务异常");

    /**
     * 枚举值
     */
    private Integer code;
    /**
     * 枚举信息
     */
    private String message;

    private EResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public EResultCode setCode(Integer code) {
        this.code = code;
        return this;
    }

    public String getMessage() {
        return message;
    }

    public EResultCode setMessage(String message) {
        this.message = message;
        return this;
    }

    /**
     * 按照Code获取枚举
     *
     * @param code 枚举值
     * @return EResultCode
     * @author LiCongLu
     * @date 2019-12-20 14:19
     */
    public static EResultCode getEResultCode(Integer code) {
        if (code != null) {
            for (EResultCode codeEnum : EResultCode.values()) {
                if (codeEnum.getCode() != null) {
                    if (codeEnum.getCode().equals(code)) {
                        return codeEnum;
                    }
                }
            }
        }
        return EResultCode.CODE0;
    }

    /**
     * 判断枚举与Code值是否相等
     *
     * @param
     * @return
     * @author LiCongLu
     * @date 2019-12-20 13:02
     */
    public boolean equalEnum(Integer code) {
        return this.getCode().equals(code);
    }


    @Override
    public String toString() {
        return "EResultCode{" +
                "code=" + code +
                ", message='" + message + '\'' +
                '}';
    }
}